importPackage(Packages.de.elo.ix.client);
//@include lib_Class.js
//@include lib_sol.common.WfUtils.js
//@include lib_sol.common.ix.RfUtils.js
//@include lib_sol.common.ix.FunctionBase.js
var logger = sol.create("sol.Logger", { scope: "sol.common.ix.functions.CheckFromService" });
/**
* Checks if a workflow was started by a service.
*
* To perform the check, this class uses {@link sol.common.WfUtils#isServiceWf}
*
* Can be used as node exit script. It updates the ELO_WF_STATUS field as configured.
*
* # As workflow node
*
* Following configuration can be applied to the comments field.
*
* {
* "wfStatus": { "fromService": "CREATED_FROM_SERVICE", "noneService": "NOT_CREATED_FROM_SERVICE" }
* }
*
* @author PZ, ELO Digital Office GmbH
* @version 1.1
*
* @eloix
* @requires sol.common.WfUtils
* @requires sol.common.ix.RfUtils
* @requires sol.common.ix.FunctionBase
*
*/
sol.define("sol.common.ix.functions.CheckFromService", {
extend: "sol.common.ix.FunctionBase",
requiredConfig: ["wfDiagram"],
/**
* @cfg {de.elo.ix.client.WFDiagram} wfDiagram (required)
* The workflow which should be checked.
*/
/**
* @cfg {Object} wfStatus
*
* "wfStatus": { "fromService": "yaaay", "noneService": "ohNooo" }
*
* This object can override the default workflow states which will be set after the check, if ths was used in a workflow node.
* If the is `undefined`, the unction will throw an exception in case the checke fails.
*
* - `fromService`: set as ELO_WF_STATUS after a successfull check
* - `noneService`: set as ELO_WF_STATUS after a check failure
*/
/**
* @private
* @property {String} [DEFAULT_PASSED_STATUS="FROM_SERVICE"] Default workflow status in case of a successful check
*/
DEFAULT_PASSED_STATUS: "FROM_SERVICE",
/**
* @private
* @property {String} [DEFAULT_FAILED_STATUS="FROM_USER"] Default workflow status in case of a check failure
*/
DEFAULT_FAILED_STATUS: "FROM_USER",
initialize: function (config) {
var me = this;
me.$super("sol.common.ix.FunctionBase", "initialize", [config]);
},
/**
* Performs the check.
*/
process: function () {
var me = this,
isServiceWf, status;
isServiceWf = sol.common.WfUtils.isServiceWf(me.wfDiagram);
if (isServiceWf) {
status = (me.wfStatus && me.wfStatus.fromService) ? me.wfStatus.fromService : me.DEFAULT_PASSED_STATUS;
} else {
status = (me.wfStatus && me.wfStatus.noneService) ? me.wfStatus.noneService : me.DEFAULT_FAILED_STATUS;
}
sol.common.WfUtils.setWorkflowStatus(me.wfDiagram, status);
}
});
/**
* @member sol.common.ix.functions.CheckFromService
* @static
* @inheritdoc sol.common.ix.FunctionBase#onExitNode
*/
function onExitNode(clInfo, userId, wFDiagram, nodeId) {
var params, module;
logger.enter("onExitNode_FromServiceCheck", { flowId: wFDiagram.id, nodeId: nodeId });
params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId);
params.wfDiagram = wFDiagram;
module = sol.create("sol.common.ix.functions.CheckFromService", params);
module.process();
logger.exit("onExitNode_FromServiceCheck");
}